package top.vanchor.flexible.config.initexception;

import lombok.Getter;

/**
 * Created by IntelliJ IDEA.
 *
 * @Author : Ding
 * @create 2022/4/3 20:38
 */
@Getter
public enum ErrorEnum {

    /**
     * 500：runtime意外运行报错抛出异常
     */
    UNEXPECTED_EXCEPTION(500, "系统发生错误"),

    /**
     * 501~699：各种一般级别失败
     */
    //通用操作失败
    OPERATION_FAILED(501, "操作失败"),
    //降权失败
    PERMISSION_FAILED_ALL(502,"您不能为您的账号降权，且此时仅剩一个超级管理员"),
    PERMISSION_FAILED_YOURSELF(503, "您不能为您的账号降权"),
    PERMISSION_FAILED_LAST_SUPER(504, "您不能为唯一的超级管理员降低权限"),
    //角色失败
    ROLE_UNCHANGEABLE(505, "超级管理员角色必须唯一，不可添加、编辑和删除"),
    ROLE_CONFLICT(506, "该角色名称已存在"),
    //菜单失败
    RULE_ASSIGN_NO_PERMISSION(507, "分配的菜单中存在普通管理员不被允许的权限"),
    SCHEDULE_RECORD_FAIL(508, "进度记录失败"),
    AD_CODE_IS_EXISTS(509, "此adCode已存在"),
    //登录失败
    LOGIN_MISSING_PARAM(510,"登录缺失必要参数"),
    LOGIN_ACCOUNT_DISABLED(511,"该账号已被禁用"),
    LOGIN_INVALID(512,"用户名或密码错误"),
    LOGIN_NO_AUTH_WECHAT(606,"用户未进行微信授权，请先进行微信授权"),
    //注册失败
    REGISTERED_ACCOUNT_EXISTS(651,"账号已存在"),
    REGISTERED_PHONE_EXISTS(652,"该手机号已被注册"),
    REGISTERED_FAILED(653,"注册失败"),
    FAILED_RESCUE_EXISTS(654,"您已有一个正在审核的救助申请，请勿重复提交"),
    FAILED_RESCUE_NONE(655,"您没有正在进行的救助申请，请创建申请"),
    FAILED_REAL_NAME(656,"人口数据校验失败，请核对人员姓名或证件号"),
    REGISTERED_EMPLOYEE_NAME_EXISTS(656,"该人员已存在，不可重复添加"),
    //编辑失败
    EDIT_PASSWORD_PRE_NO_EXIST(701,"原密码错误"),
    EDIT_PASSWORD_NEW_TOO_SHORT(702,"新密码长度不能小于6"),
    //各种其他失败
    FILE_ERR(801,"文件格式解析失败，请点击[结束任务]按钮，待校验文件后可重新上传；如文件格式正确仍提示此消息，请联系管理员"),
    HAS_EMPLOYEE(802,"用工单位下含有员工，无法删除"),
    IS_INJURY(803,"该人员已处于工伤状态"),
    ID_CARD_UNLAWFUL(804,"身份证号码不合法"),
    OPT_TOO_FAST(805,"操作过于频繁！"),
    DATE_ANALYSIS_ERR(806,"日期解析失败"),
    EMP_NO_WORK(807,"该人员处于非用工状态，无法记录工伤"),
    FILE_ERR_NO_CLOSE(808,"文件格式解析失败，请校验文件后重新上传；如文件格式正确仍提示此消息，请联系管理员"),
    AREA_CODE_NO_UNIQUE(809,"行政编码重复！请校对信息"),
    COMPANY_NAME_NO_UNIQUE(810,"用工单位名称已存在，请核对信息！"),
    GENERATE_PDF_ERR(811,"生成PDF错误"),
    DICT_VALUE_EXIST(812,"字典值已存在"),

    /**
     * 300~320：token异常
     */
    NOT_LOGIN(300, "未登录，请先登录"),
    SIGNATURE_VERIFICATION(301, "token签名失败"),
    DECODE_ERROR(302, "token解析失败，请重新登录获取token"),
    PARSING_FAILED(303, "token解析失败"),
    EXPIRED(304, "token已过期，请重新登陆"),
    TOKEN_REPLACE(305, "账号已在其他地方登录，授权失效"),

    /**
     * 400~450：各种请求和访问级别失败
     */
    NO_AUTH(403,"您无权访问"),
    HIGHEST_AUTH(406,"权限错误，该操作需要最高权限"),
    NET_ERR(407,"您的网络不稳定，请检查网络！"),

    /**
     * 700~899：外部API失败
     */
    VERIFY_CODE_INVALID(701,"验证码无效或已过期"),
    VERIFY_CODE_MISMATCH(702,"验证码错误"),
    VERIFY_CODE_SEND_ERROR(703,"短信验证码发送失败"),
    API_APPID_INVALID(704,"授权码无效"),
    API_REAL_NAME_FAILED(705,"实名认证失败，请校核信息"),
    API_DATA_NOT_EXIST(706,"现有数据库中未匹配到相关信息");


    private final Integer errorCode;
    private final String errorMsg;

    ErrorEnum(Integer errorCode, String errorMsg) {
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }

}
